/***
 * window通过弹窗显示出来，给用户选择单位和人员信息的。
 * 
 * 
 */

Ext.ns('Ext.dm');

//选择单位的弹窗
Ext.dm.ShowUnitWindow = Ext.extend(Ext.Window,{
	modal:true,
	title:'选择 单位',
	cloasable : true,
	buttonAlign: 'center',

initComponent : function(){
	
	//reader
	var _reader = new Ext.data.JsonReader(
			{
				root : 'list',
				totalProperty : 'totalCount',
				id : 'id',
				successProperty : '@success'
			}, 
			[ {
				name : 'unitid',
				mapping : 'unitid'
			}, {
				name : 'unitname',
				mapping : 'unitname'
			}, {
				name : 'unitcategory',
				mapping : 'unitcategory'
			}, {
				name : 'address',
				mapping : 'address'
			}, {
				name : 'unitcharacter',
				mapping : 'unitcharacter'
			}, {
				name : 'location',
				mapping : 'location'
			}, {
				name : 'postcode',
				mapping : 'postcode'
			}, {
				name : 'contactman',
				mapping : 'contactman'
			}, {
				name : 'phone',
				mapping : 'phone'
			}, {
				name : 'email',
				mapping : 'email'
			}, {
				name : 'fax',
				mapping : 'fax'
			}, {
				name : 'sparefield1',
				mapping : 'sparefield1'
			}, {
				name : 'sparefield2',
				mapping : 'sparefield2'
			}, {
				name : 'sparefield3',
				mapping : 'sparefield3'
			}]);
	
	
	var _store =  new Ext.data.Store({
		proxy: new Ext.data.HttpProxy({
            url: 'unitManage/unitManageAction!getAll'
        }),
        pageSize : 20,
        reader : _reader
	});
	
	this.sm = new Ext.grid.CheckboxSelectionModel({
		singleSelect: true
	});
	
	this.grid = new Ext.grid.GridPanel({
		id:'dm_unitgrid',
		store : _store,
		height:300,
		width:600,
		sm: this.sm,
		cm  :  new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(),this.sm, {
			header : '单位Id',
			dataIndex : 'unitid',
			width : 70
		}, {
			header : '单位名称',
			dataIndex : 'unitname',
			width : 70
		}, {
			header : '单位类别',
			dataIndex : 'unitcategory',
			width : 70
		}, {
			header : '单位性质',
			dataIndex : 'unitcharacter',
			width : 70
		}, {
			header : '所在地区',
			dataIndex : 'location',
			width : 70
		} , {
			header : '地址',
			dataIndex : 'address',
			width : 70
		} , {
			header : '邮编',
			dataIndex : 'postcode',
			width : 70
		}, {
			header : '联系人',
			dataIndex :'contactman',
			width : 70
		}, {
			header : '电话',
			dataIndex : 'phone',
			width : 70
		}, {
			header : '邮编',
			dataIndex : 'email',
			width : 70
		}, {
			header : '传真',
			dataIndex : 'fax',
			width : 70
		}, {
			header : '操作',
			dataIndex : 'fax',
			widht : 70,
			renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){
			var brow="unit_operation('"+record.get('unitid')
					+"','"+record.get('unitname')
					+"','"+record.get('unitcategory')
					+"','"+record.get('unitcharacter')
					+"','"+record.get('location')
					+"','"+record.get('address')
					+"','"+record.get('postcode')
					+"','"+record.get('contactman')
					+"','"+record.get('phone')
					+"','"+record.get('email')
					+"','"+record.get('fax')+"');return false;";
			var b = ' <a  onclick="'+brow+'">操作</a>&nbsp;';
			
			return b;
		}
		}]),
		bbar :  new Ext.PagingToolbar({
			pageSize : 20,
			store : _store,
			displayInfo : true,
			displayMsg : '显示 {0}-{1}条 / 共 {2} 条',
			emptyMsg : "无数据。",
			plugins        : [new Ext.ux.PageSizePlugin()],
			items : ['-']
		}),
		tbar : [{
			xtype: 'button',
			text : '新增',
			iconCls:'ok',
			handler : function(b,e){
			var a  = Ext.getCmp("dm_unit_add");
			if(a == null ){
				a= new Ext.unit.Window({
					id : "dm_unit_add",
					closable : true,
					title : "新增单位信息",
					buttons : [{
						xtype:'button',
						text:'确定',
						handler : function(b,e){
							var a = b.findParentBy(function(ct, cmp) { 
								return (ct instanceof Ext.unit.Window) ? true : false; 
							});
							var c = a.updatePanel;
							c.form.submit({
								url:'unitManage/unitManageAction!insertUnit',
								method: 'post',
								success : function(form,action){
									Ext.Msg.alert('提示','新增单位信息成功！');
									//更新成功之后刷新store
									var n = Ext.getCmp('dm_select_unit');
									if(n != null)
										n.grid.store.load({
											params:{
		          	        	 				start:0,
		          	        	 				limit: 30
										}
										});
							},
								failure : function(form,action){
									Ext.Msg.alert('提示','新增单位信息失败！');
							},
								params : {
									'unitInfo.unitname': c.findById('unitname').getValue(),
									'unitInfo.unitcategory': c.findById('unitcategory').getValue(),
									'unitInfo.address': c.findById('address').getValue(),
									'unitInfo.unitcharacter': c.findById('unitcharacter').getValue(),
									'unitInfo.location': c.findById('dmu_location').getValue(),
									'unitInfo.postcode': c.findById('postcode').getValue(),
									'unitInfo.contactman': c.findById('dmu_contactman').getValue(),
									'unitInfo.phone': c.findById('phone').getValue(),
									'unitInfo.email': c.findById('email').getValue(),
									'unitInfo.fax': c.findById('fax').getValue()
								}
							});
							a.close();
					}
					},{
						xtype:'button',
						text:'取消',
						handler : function(b,e){
							var a = b.findParentBy(function(ct, cmp) { 
								return (ct instanceof Ext.unit.Window) ? true : false; 
							});
							a.close();
					}
					}]
				});
			}
			a.show();
		}
		},{
      	  xtype:'combo',
      	  fieldLabel:'选择查询字段',
      	  id: this.id+'inqueryType',
      	  width : 80,
      	    store : new Ext.data.SimpleStore({
      	        fields : ['value', 'text'],
      	        data : [['unitname', '单位名称'], ['location', '所在地'],['','请选择查询字段']]
      	    }),//填充数据
      	   emptyText : '选择查询字段',
      	   mode : 'local',//数据模式，local代表本地数据
      	   readOnly : true,//是否只读
      	   triggerAction : 'all',// 显示所有下列数据，一定要设置属性triggerAction为all
      	   allowBlank : true,//不允许为空
      	   valueField : 'value',//值
      	   displayField : 'text',//显示文本
      	   editable: false,//是否允许输入
      	   forceSelection: false,//必须选择一个选项
      	   blankText:'选择查询字段'//该项如果没有选择，则提示错误信息
        },{
        	xtype:'textfield',
        	id:this.id+'inqueryText'
        },{
        	xtype:'button',
        	text:'查询',
        	handler : function(b,e){
        		var a = b.findParentBy(function(ct, cmp) { 
        			return (ct instanceof Ext.dm.ShowUnitWindow) ? true : false; 
        		});
        		var inqueryType = a.grid.getTopToolbar().findById(a.id+"inqueryType").getValue();
    			var inqueryText = a.grid.getTopToolbar().findById(a.id+"inqueryText").getValue();
    			if(inqueryType == "" && inqueryType == ""){
//    				Ext.Msg.alert("请选择查询字段并输入查询文本!");
//    				return;
    			}else if(inqueryType == ""){
    				Ext.Msg.alert("请选择查询字段!");
    				return;
    			}else if(inqueryText == ""){
    				Ext.Msg.alert("请输入查询文本!");
    				return;
    			}
    			a.grid.store.baseParams = {
    					start : 0,
    					limit : 20, 
						inqueryType : inqueryType,
						inqueryText : inqueryText
				}
    			a.grid.store.load();
        }
        }
		]
	});
	//window里包含的grid在此处添加
	this.items = this.grid;

Ext.dm.ShowUnitWindow.superclass.initComponent.call(this);
}
});









//选择负责人的弹窗
Ext.dm.ShowDirectorWindow = Ext.extend(Ext.Window,{
	modal:true,
	title:'选择负责人',
	cloasable : true,
	layout:'fit',
	buttonAlign: 'center',

	initComponent : function(){
	var _reader = new Ext.data.JsonReader(
			{
				root : 'list',
				totalProperty : 'totalCount',
				id : 'id',
				successProperty : '@success'
			}, 
			[ {
				name : 'personid',
				mapping : 'personid'
			}, {
				name : 'name',
				mapping : 'name'
			}, {
				name : 'personcategory',
				mapping : 'personcategory'
			}, {
				name : 'phone',
				mapping : 'phone'
			}, {
				name : 'address',
				mapping : 'address'
			}, {
				name : 'email',
				mapping : 'email'
			}, {
				name : 'fax',
				mapping : 'fax'
			}, {
				name : 'identitycardnumber',
				mapping : 'identitycardnumber'
			}, {
				name : 'sparefield1',
				mapping : 'sparefield1'
			}, {
				name : 'sparefield2',
				mapping : 'sparefield2'
			}, {
				name : 'sparefield3',
				mapping : 'sparefield3'
			}]);
	
	
	var _store =  new Ext.data.Store({
		proxy: new Ext.data.HttpProxy({
            url: 'personManage/personInfoManageAction!getAll'
        }),
        pageSize : 20,
        reader : _reader
	});
		
		this.sm = new Ext.grid.CheckboxSelectionModel({
			singleSelect: true
		});
		this.grid =  new Ext.grid.GridPanel({
			id:'director_sgrid',
			store : _store,
			height:300,
			width:800,
			sm: this.sm,
			cm  :  new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(),this.sm, {
				header : 'Id',
				dataIndex : 'personid',
				width : 70
			}, {
				header : '姓名',
				dataIndex : 'name',
				width : 70
			}, {
				header : '人员类别',
				dataIndex : 'personcategory',
				width : 70
			}, {
				header : '电话',
				dataIndex : 'phone',
				width : 70
			}, {
				header : '地址',
				dataIndex : 'address',
				width : 70
			}, {
				header : '邮箱',
				dataIndex : 'email',
				width : 70
			} , {
				header : '传真',
				dataIndex : 'fax',
				width : 70
			} , {
				header : '身份证',
				dataIndex : 'identitycardnumber',
				width : 70
			} ,{
				header : '操作',
				dataIndex : "personid",
				renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){
				var brow="pi_Operation('"+record.get('personid')
						+"','"+record.get('name')
						+"','"+record.get('personcategory')
						+"','"+record.get('phone')
						+"','"+record.get('address')
						+"','"+record.get('email')
						+"','"+record.get('fax')
						+"','"+record.get('identitycardnumber')+"');return false;";
				var b = ' <a  onclick="'+brow+'">操作</a>&nbsp;';
				
				return b;
			}
			} ]),
			bbar :  new Ext.PagingToolbar({
				pageSize : 20,
				store : _store,
				displayInfo : true,
				displayMsg : '显示 {0}-{1}条 / 共 {2} 条',
				emptyMsg : "无数据。",
				plugins        : [new Ext.ux.PageSizePlugin()],
				items : ['-']
			}),
			tbar : [{
				xtype : 'button',
				text : '新增',
				handler : function(b,e){
					var a  = Ext.getCmp("dm_personinfo_add");
					if(a == null ){
						a= new Ext.pi.UpdateWindow({
							id : "dm_personinfo_add",
							closable : true,
							title : "新增人员信息",
							buttons : [{
								xtype:'button',
								text:'确定',
								handler : function(b,e){
									var a = b.findParentBy(function(ct, cmp) { 
										return (ct instanceof Ext.pi.UpdateWindow) ? true : false; 
									});
									c = a.updatePanel;
									c.form.submit({
										url:'personManage/personInfoManageAction!insertPerson',
										method: 'post',
										success : function(form,action){
											Ext.Msg.alert('提示','新增人员信息！');
											//更新成功之后刷新store
											var n = Ext.getCmp('dm_selectdirector');
											if(n != null)
												n.grid.store.load({
													params:{
				          	        	 				start:0,
				          	        	 				limit: 30
												}
												});
									},
										failure : function(form,action){
											Ext.Msg.alert('提示','新增人员信息失败！');
									},
										params : {
											'personInfo.name': c.findById('name').getValue(),
											'personInfo.personcategory': c.findById('personcategory').getValue(),
											'personInfo.phone': c.findById('phone').getValue(),
											'personInfo.address': c.findById('address').getValue(),
											'personInfo.email': c.findById('mailbox').getValue(),
											'personInfo.fax': c.findById('fax').getValue(),
											'personInfo.identitycardnumber': c.findById('identitycardnumber').getValue()
										}
									});
									a.close();
							}
							},{
								xtype:'button',
								text:'取消',
								handler : function(b,e){
									var a = b.findParentBy(function(ct, cmp) { 
										return (ct instanceof Ext.pi.UpdateWindow) ? true : false; 
									});
									a.close();
							}
							}]
						});
					}
					a.show();
			}
			},{
		      	  xtype:'combo',
		      	  fieldLabel:'选择查询字段',
		      	  id: this.id+'inqueryType',
		      	  width : 80,
		      	    store : new Ext.data.SimpleStore({
		      	        fields : ['value', 'text'],
		      	        data : [['name', '姓名'], ['id', '身份证'],['','请选择查询字段']]
		      	    }),//填充数据
		      	   emptyText : '选择查询字段',
		      	   mode : 'local',//数据模式，local代表本地数据
		      	   readOnly : true,//是否只读
		      	   triggerAction : 'all',// 显示所有下列数据，一定要设置属性triggerAction为all
		      	   allowBlank : true,//不允许为空
		      	   valueField : 'value',//值
		      	   displayField : 'text',//显示文本
		      	   editable: false,//是否允许输入
		      	   forceSelection: false,//必须选择一个选项
		      	   blankText:'选择查询字段'//该项如果没有选择，则提示错误信息
		        },{
		        	xtype:'textfield',
		        	id:this.id+'inqueryText'
		        },{
		        	xtype:'button',
		        	text:'查询',
		        	handler : function(b,e){
		        		var a = b.findParentBy(function(ct, cmp) { 
		        			return (ct instanceof Ext.dm.ShowDirectorWindow) ? true : false; 
		        		});
		        		var inqueryType = a.grid.getTopToolbar().findById(a.id+"inqueryType").getValue();
		    			var inqueryText = a.grid.getTopToolbar().findById(a.id+"inqueryText").getValue();
		    			if(inqueryType == "" && inqueryType == ""){
//		    				Ext.Msg.alert("请选择查询字段并输入查询文本!");
//		    				return;
		    			}else if(inqueryType == ""){
		    				Ext.Msg.alert("请选择查询字段!");
		    				return;
		    			}else if(inqueryText == ""){
		    				Ext.Msg.alert("请输入查询文本!");
		    				return;
		    			}
		    			a.grid.store.baseParams = {
		    					start : 0,
		    					limit : 20, 
								inqueryType : inqueryType,
								inqueryText : inqueryText
						}
		    			a.grid.store.load();
		        }
		        }]
		});
		this.items = this.grid;

	Ext.dm.ShowDirectorWindow.superclass.initComponent.call(this);
}
});


/**
 * 更改操作函数
 * @return
 */
function pi_Operation(id,name,category,phone,address,email,fax,idnumber){

	var a  = Ext.getCmp("dm_personinfo_update");
	if(a == null ){
		a= new Ext.pi.UpdateWindow({
			id : "dm_personinfo_update",
			closable : true,
			title : "修改人员信息",
			buttons : [{
				xtype:'button',
				text:'确定',
				handler : function(b,e){
					var a = b.findParentBy(function(ct, cmp) { 
						return (ct instanceof Ext.pi.UpdateWindow) ? true : false; 
					});
					c = a.updatePanel;
					c.form.submit({
						url:'personManage/personInfoManageAction!updatePerson',
						method: 'post',
						success : function(form,action){
							Ext.Msg.alert('提示','更新人员信息成功！');
							//更新成功之后刷新store
							var n = Ext.getCmp('dm_selectdirector');
							if(n != null)
								n.grid.store.load({
									params:{
          	        	 				start:0,
          	        	 				limit: 30
								}
								});
					},
						failure : function(form,action){
							Ext.Msg.alert('提示','更新人员信息失败！');
					},
						params : {
							'personInfo.personid': c.findById('personid').getValue(),
							'personInfo.name': c.findById('name').getValue(),
							'personInfo.personcategory': c.findById('personcategory').getValue(),
							'personInfo.phone': c.findById('phone').getValue(),
							'personInfo.address': c.findById('address').getValue(),
							'personInfo.email': c.findById('mailbox').getValue(),
							'personInfo.fax': c.findById('fax').getValue(),
							'personInfo.identitycardnumber': c.findById('identitycardnumber').getValue()
						}
					});
					a.close();
			}
			},{
				xtype:'button',
				text:'取消',
				handler : function(b,e){
					var a = b.findParentBy(function(ct, cmp) { 
						return (ct instanceof Ext.pi.UpdateWindow) ? true : false; 
					});
					a.close();
			}
			}]
		});
	}
	
	a.updatePanel.findById('personid').setValue(id);
	a.updatePanel.findById('name').setValue(name);
	a.updatePanel.findById('personcategory').setValue(category);
	a.updatePanel.findById('phone').setValue(phone);
	a.updatePanel.findById('address').setValue(address);
	a.updatePanel.findById('mailbox').setValue(email);
	a.updatePanel.findById('fax').setValue(fax);
	a.updatePanel.findById('identitycardnumber').setValue(idnumber);
	a.show();

}